home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-seriously_amiga-
/
misc
/
felix
/
source
/
libinit.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-25
|
4KB
|
131 lines
//*************************************************************************//
// Filename: LibInit.c
// Autor: Christian Taulien of Strange Intelligence
// Purpose: Library initializers and functions to be called by StartUp.c
// Creation: 18. März 1998
//*************************************************************************//
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/libraries.h>
#include <exec/execbase.h>
#include <exec/resident.h>
#include <exec/initializers.h>
#include <pragma/exec_lib.h>
#include <clib/gadtools_protos.h>
#include "global.h"
#include "FelixBase.h"
ULONG SAVEDS L_OpenLibs(void);
void SAVEDS L_CloseLibs(void);
extern struct FelixBase *FelixBase;
struct ExecBase *SysBase = NULL;
struct IntuitionBase *IntuitionBase = NULL;
struct GfxBase *GfxBase = NULL;
struct Library *DOSBase = NULL;
struct Library *RexxSysBase = NULL;
struct Library *GadToolsBase = NULL;
struct Library *UtilityBase = NULL;
struct Library *DiskFontBase = NULL;
struct Library *LocaleBase = NULL;
char ExLibName [] = "Felix.api";
char ExLibID [] = "Felix " VERSION_S " (" __DATE2__ ")\r\n";
char Copyright [] = "Written by Christian <City> Taulien of Strange Intelligence.";
extern ULONG InitTab[];
extern APTR EndResident; /* below */
struct Resident ROMTag = /* do not change */
{
RTC_MATCHWORD,
&ROMTag,
&EndResident,
RTF_AUTOINIT,
VERSION,
NT_LIBRARY,
0,
&ExLibName[0],
&ExLibID[0],
&InitTab[0]
};
APTR EndResident;
struct MyDataInit /* do not change */
{
UWORD ln_Type_Init; UWORD ln_Type_Offset; UWORD ln_Type_Content;
UBYTE ln_Name_Init; UBYTE ln_Name_Offset; ULONG ln_Name_Content;
UWORD lib_Flags_Init; UWORD lib_Flags_Offset; UWORD lib_Flags_Content;
UWORD lib_Version_Init; UWORD lib_Version_Offset; UWORD lib_Version_Content;
UWORD lib_Revision_Init; UWORD lib_Revision_Offset; UWORD lib_Revision_Content;
UBYTE lib_IdString_Init; UBYTE lib_IdString_Offset; ULONG lib_IdString_Content;
ULONG ENDMARK;
} DataTab =
{
INITBYTE(OFFSET(Node, ln_Type), NT_LIBRARY),
0x80, (UBYTE) OFFSET(Node, ln_Name), (ULONG) &ExLibName[0],
INITBYTE(OFFSET(Library, lib_Flags), LIBF_SUMUSED|LIBF_CHANGED),
INITWORD(OFFSET(Library, lib_Version), VERSION),
INITWORD(OFFSET(Library, lib_Revision), REVISION),
0x80, (UBYTE) OFFSET(Library, lib_IdString), (ULONG) &ExLibID[0],
(ULONG) 0
};
ULONG SAVEDS L_OpenLibs(void)
/*S*/
{
TRACE("Entry");
SysBase = (*((struct ExecBase **) 4));
if (DOSBase = OpenLibrary("dos.library", 37))
{
if (IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 37))
{
if (GfxBase = (struct GfxBase *) OpenLibrary("graphics.library", 37))
{
if (RexxSysBase = OpenLibrary("rexxsyslib.library", 36))
{
if (GadToolsBase = OpenLibrary("gadtools.library", 39))
{
if (UtilityBase = OpenLibrary("utility.library", 37))
{
if (DiskFontBase = OpenLibrary("diskfont.library", 37))
{
if (LocaleBase = OpenLibrary("locale.library", 39))
{
return TRUE;
} // if
} // if
} // if
} // if
} // if
} // if
} // if
} // if
return FALSE;
}
/*E*/
void SAVEDS L_CloseLibs(void)
/*S*/
{
TRACE("Entry");
if(GfxBase) CloseLibrary((struct Library *) GfxBase);
if(IntuitionBase) CloseLibrary((struct Library *) IntuitionBase);
if(DOSBase) CloseLibrary((struct Library *) DOSBase);
if(RexxSysBase) CloseLibrary((struct Library *) RexxSysBase);
if(GadToolsBase) CloseLibrary((struct Library *) GadToolsBase);
if(UtilityBase) CloseLibrary((struct Library *) UtilityBase);
if(DiskFontBase) CloseLibrary((struct Library *) DiskFontBase);
if(LocaleBase) CloseLibrary((struct Library *) LocaleBase);
}
/*E*/